package com.aloda.service;

import com.aloda.dto.scoringResult.BatchSResultAddDTO;
import com.aloda.dto.scoringResult.ScoringResultAddDTO;
import com.aloda.dto.scoringResult.ScoringResultEditDTO;
import com.aloda.dto.scoringResult.ScoringResultGenerateDTO;
import com.aloda.entity.ScoringResult;
import com.aloda.query.ScoringResultPageDTO;
import com.aloda.query.ScoringResultUserPageDTO;
import com.aloda.result.PageResult;
import com.aloda.vo.scoringResult.ScoringResultGenerateVO;
import com.aloda.vo.scoringResult.ScoringResultInfoVO;
import com.aloda.vo.scoringResult.ScoringResultPageVO;
import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.servlet.http.HttpServletResponse;

import java.util.List;

/**
* @author aloda
* @description 针对表【scoring_result(评分结果)】的数据库操作Service
* @createDate 2025-03-05 16:27:38
*/
public interface ScoringResultService extends IService<ScoringResult> {

    /**
     * 分页查询
     * @param scoringResultPageDTO
     * @return
     */
    PageResult<ScoringResultPageVO> pageQuery(ScoringResultPageDTO scoringResultPageDTO);

    /**
     * 新增评分结果
     * @param scoringResultAddDTO
     * @return
     */
    long addResult(ScoringResultAddDTO scoringResultAddDTO);

    /**
     * 编辑评分结果
     * @param scoringResultEditDTO
     */
    void editResult(ScoringResultEditDTO scoringResultEditDTO);

    /**
     * 导出评分结果信息表格
     * @param response
     * @param ids
     */
    void exportToExcel(HttpServletResponse response, List<Long> ids);

    /**
     * 客户端新增评分结果
     * @param scoringResultAddDTO
     * @return
     */
    long addResultByUser(ScoringResultAddDTO scoringResultAddDTO);

    /**
     * 客户端分页查询评分结果
     * @param scoringResultUserPageDTO
     * @return
     */
    PageResult<ScoringResultPageVO> pageQueryByUser(ScoringResultUserPageDTO scoringResultUserPageDTO);

    /**
     * 客户端编辑评分结果
     * @param scoringResultEditDTO
     * @return
     */
    long editResultByUser(ScoringResultEditDTO scoringResultEditDTO);

    /**
     * 客户端获取评分结果详情
     * @param id
     * @return
     */
    ScoringResultInfoVO getResultById(Long id);

    /**
     * 客户端删除评分结果
     * @param ids
     * @return
     */
    long deleteResultByIds(List<Long> ids);

    /**
     * AI生成评分结果
     * @param scoringResultGenerateDTO
     * @return
     */
    List<ScoringResultGenerateVO> aiGenerate(ScoringResultGenerateDTO scoringResultGenerateDTO);

    /**
     * 批量新增评分结果
     * @param batchSResultAddDTO
     * @return
     */
    void saveGenerateResultBatch(BatchSResultAddDTO batchSResultAddDTO);
}
